# 作业：
# 1、搜索：南京市，点击出来的南京市——》点击搜索——》看是否有跳转到南京市民俗地区
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy  # 移动端的操作
from appium.webdriver.common.touch_action import TouchAction  # 操作滑动的
import time
import pytest
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.ui import WebDriverWait



class TestYJMS():
    @pytest.fixture(scope='function', autouse=True)
    def setup_model(self):
        dic = {
            "appPackage": "me.onehome.app",
            "appActivity": ".activity.ActivitySplash_",
            "deviceName": "z3q",
            "platformName": "Android",
            "platformVersion": "7.1.2"
        }
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", dic)
        self.driver.implicitly_wait(15) # 设置一个全局的等待,隐式等待

        # 点击出现的同意按钮
        button = self.driver.find_element(MobileBy.ID, "me.onehome.app:id/tv_agree")
        button.click()  # 点击同意按钮
        # 滑动引导页面
        TouchAction(self.driver).press(x=702, y=922).move_to(x=36, y=852).release().perform()  # 滑动第一次
        TouchAction(self.driver).press(x=702, y=922).move_to(x=36, y=852).release().perform()  # 滑动第二次
        TouchAction(self.driver).press(x=702, y=922).move_to(x=36, y=852).release().perform()  # 滑动第三次
        # 通过tap点击立即开启按钮
        time.sleep(2)
        TouchAction(self.driver).tap(x=367, y=3528).perform()
        yield
        self.driver.quit() # 每条用例执行完退出

    def test_search(self):
      # 点击东京都，搜索框里的
      self.driver.find_element(MobileBy.ID, "me.onehome.app:id/tv_Destination").click()
      # 清除输入框内的内容
      input_text = self.driver.find_element(MobileBy.ID, "me.onehome.app:id/editText")
      input_text.clear()  # 先清除掉所有的内容
      input_text.send_keys("南京")

      time.sleep(2) # 强制等待
      # 点击出现的列表里第一个北京市
      TouchAction(self.driver).tap(x=525, y=709).perform()

      # 通过xpath方式点击搜索按钮
      self.driver.find_element(MobileBy.XPATH, "//*[@text='搜索']").click()

      # 通过class name 定位到北京市 的title
      title = WebDriverWait(self.driver,10,0.5).until(expected_conditions.presence_of_all_elements_located((MobileBy.CLASS_NAME, "android.widget.TextView")))[0] # 显示等待
      #  expected_conditions.presence_of_all_elements_located，寻找class name一组的元素，并返回角标为0的，用显示等待的方式
      text = title.text  # 。text 返回这个元素的文本信息

      # 断言，看用例是否通过
      try:
        assert text == "南京市"
      except:
        self.driver.get_screenshot_as_file("text.png")
        raise "用例执行失败"


